package com.eduplatform.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * 试题数据传输对象
 */
@Data
public class QuestionDTO {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 题目内容
     */
    @NotBlank(message = "题目内容不能为空")
    private String content;

    /**
     * 选项（JSON格式，单选/多选题使用）
     */
    private String options;

    /**
     * 答案
     */
    @NotBlank(message = "答案不能为空")
    private String answer;

    /**
     * 答案解析
     */
    private String analysis;

    /**
     * 题目类型：1-单选题，2-多选题，3-判断题，4-填空题，5-简答题
     */
    @NotNull(message = "题目类型不能为空")
    private Integer type;

    /**
     * 难度：1-简单，2-中等，3-困难
     */
    @NotNull(message = "难度不能为空")
    private Integer difficulty;

    /**
     * 学科ID
     */
    @NotNull(message = "学科不能为空")
    private Long subjectId;

    /**
     * 学科名称
     */
    private String subjectName;

    /**
     * 教育阶段：1-小学，2-初中，3-高中，4-大学
     */
    @NotNull(message = "教育阶段不能为空")
    private Integer educationLevel;

    /**
     * 创建人ID
     */
    private Long creatorId;

    /**
     * 创建人姓名
     */
    private String creatorName;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 获取题目类型名称
     */
    public String getTypeName() {
        if (type == null) {
            return "";
        }
        switch (type) {
            case 1:
                return "单选题";
            case 2:
                return "多选题";
            case 3:
                return "判断题";
            case 4:
                return "填空题";
            case 5:
                return "简答题";
            default:
                return "未知";
        }
    }

    /**
     * 获取难度名称
     */
    public String getDifficultyName() {
        if (difficulty == null) {
            return "";
        }
        switch (difficulty) {
            case 1:
                return "简单";
            case 2:
                return "中等";
            case 3:
                return "困难";
            default:
                return "未知";
        }
    }

    /**
     * 获取教育阶段名称
     */
    public String getEducationLevelName() {
        if (educationLevel == null) {
            return "";
        }
        switch (educationLevel) {
            case 1:
                return "小学";
            case 2:
                return "初中";
            case 3:
                return "高中";
            case 4:
                return "大学";
            default:
                return "未知";
        }
    }
}